*****************************************************************************
*																			*
*					Kontrollvariablen RCS 13								*
*																			*
*****************************************************************************

use 2013\ZA5703_v2-0-0.dta, clear

set more off

*----------------------------------
* Wochen und Tage
*--------------------------------

/*Wochen und Tag sollen vom Wahltag aus r�ckw�rts z�hlen:
Wahlwoche bzw. Wahltag = 0*/

tab pre_woche			//gibt bislang Kalenderwochen an
gen week = pre_woche-38
tab week				//jetzt sch�n �bersichtlich:
						//RCS 2013 beginnt 10 Wochen
						//vor der Wahl
						
lab var week "Wochen bis zur BTW"

tab pre_tag				//Laufindex
tab pre_datum 			//Vorwahlbefragung endete einen Tag vor BTW 
gen day = pre_tag-77
tab day

lab var day "Tage bis zur BTW"

/*Laufindex f�r Wochen und Tage, der bei 0 anf�ngt und dann
bis zum Wahltag hochl�uft */

gen week_count = pre_woche-28
lab var week_count "Count Woche ab Woche 0"

gen day_count = pre_tag-1
lab var day_count "Count Tage ab Tag 0"


*-------------------------------------------
* Verhaltensabsichten
*-------------------------------------------
lookfor wahlbeteiligung
tab pre003 pre005a

fre pre005a

lab define wabsfull ///
	1 "Union" ///
	4 "SPD" ///
	5 "FDP" ///
	6 "Gr�ne" ///
	7 "Die Linke" ///
	206 "NPD" ///
	215 "Piraten" ///
	322 "AFD" ///
	801 "andere Partei" ///
	888 "wei� nicht" ///
	999 "Nichtw�hler", replace
	
recode pre005a (-99 -97=.) (-98=888) (-84/-83=999) ///
	(1/3=1), gen(wabsfull)
replace wabsfull = 999 if pre003>3
replace wabsfull = . if pre003==6		//Briefw�hler m�ssen leider raus
									//weil f�r sie keine Latenzen erhoben
lab val wabsfull wabsfull
fre wabsfull
tab wabsfull pre005a, m


* Dummies f�r jede Auspr�gung bilden
tab wabsfull, gen(wabs)

foreach var of varlist wabs1-wabs11 {
gen mean`var' = .
}

forvalues num=-10/0 {
foreach var of varlist wabs1-wabs11 {
	sum `var' [aweight=w_ipf1w] if week==`num'
	replace mean`var' = r(mean) if week==`num'
}
}

fre meanwabs1 meanwabs2


/*Vorsicht, die neuen wabs-Variablen haben andere Suffix-Zahlen
als die Auspr�gung*/

tab wabsfull wabs1, m


*---------------------------------------
* Wahlentscheidung (Nachwahl)
*----------------------------------------

lookfor stimme
fre pos004a
recode pos004a (-99/-98 -95=.) (-97 -84 -83=999) ///
	(1/3=1), gen(vote)
lab val vote wabsfull

fre vote
tab vote pos004a, m

*-----------------------------------------
* Pr�dispositionen
*-----------------------------------------

* Parteiidentifikation: Dummies
lookfor Parteiidentifikation
tab pre123a

gen pidunion = pre123a>=1 & pre123a<=3
gen pidspd = pre123a==4
gen pidfdp = pre123a==5
gen pidgru = pre123a==6
gen pidlin = pre123a==7
gen pidnpd = pre123a==36
gen pidpir = pre123a==215
gen pidafd = pre123a==322
gen pidand = pre123a==801
gen pidno = pre123a==808 | pre123a==-98		//wer nicht wei�, ob er eine
											//PID hat, hat wohl keine
											
gen pidreg = pidunion==1 | pidfdp==1
gen pidopp = pidspd==1 | pidgru==1 | pidlin==1
gen pidother = pidnpd==1 | pidpir==1 | pidafd==1 | pidand==1 

lab var pidunion "Anh�nger Union"
lab var pidspd "Anh�nger SPD"
lab var pidfdp "Anh�nger FDP"
lab var pidgru "Anh�nger Gr�ne"
lab var pidlin "Anh�nger Linke"
lab var pidand "Anh�nger anderer Partei"
lab var pidno "Keine PID"
lab var pidreg "Regierungsanh�nger" 
lab var pidopp "Oppositionsanh�nger"
lab var pidother "Anh�nger von anderen Parteien (nicht im BT)"

foreach var of varlist pid* {
replace `var' = . if pre123a==-99  //Missings rausschmei�en
}

tab pre123a pidunion, m			//Kontrolle
tab pre123a pidspd, m
tab pre123a pidgru, m
tab pre123a pidno, m

* f�r alternativspezifische Analysen: Parteien bekommen
* gleiche Nummer wie in Vote-Variable
gen pid1 = pidunion
gen pid4 = pidspd
gen pid5 = pidfdp
gen pid6 = pidgru
gen pid7 = pidlin
gen pid206 = pidnpd
gen pid215 = pidpir
gen pid322 = pidafd
gen pid801 = pidand

* Parteiidentifikation: St�rke
lookfor Staerke
fre pre124 pre123a

mvdecode pre124, mv(-99/-97)
gen pidstr = 6-pre124		//Skala umdrehen: Hohe Werte sollen hohe St�rke bedeuten
replace pidstr = 0 if pidno==1	//St�rke=0, wenn keine PID

tab pidstr pidno, m
lab var pidstr "Parteiidentifikationsst�rke"

* Politisches Interesse
tab pre001, m
gen polint=5-pre001		//Skala umdrehen
lab var polint "Politisches Interesse"
lab define polint 0 "keins" 4 "sehr hoch", replace
lab val polint polint
tab polint pre001

	
* Links-Rechts-Selbsteinstufung
lookfor links
tab pre018

mvdecode pre018, mv(-99/-71=.)
gen lire = pre018-6
lab var lire "Links-Rechts-Selbsteinstufung"
lab define lire -5 "links" 5 "rechts"
lab val lire lire
fre lire


*---------------------------------------------------------
* Stimmt Wahlentscheidung (Nachwahl) mit PID �berein?
*---------------------------------------------------------

gen votepidmatch = . 

foreach num of numlist 1 4 5/7 206 215 322 801 {
replace votepidmatch = 1 if pid`num'==1 & vote==`num'
replace votepidmatch = 0 if (pid`num'~=1 & vote==`num') ///
	| (pid`num'==1 & vote~=`num')
}

replace votepidmatch = 0 if vote==999 	//bei Nichtw�hlern stimmt Entscheidung auch nicht mit PID �berein
replace votepidmatch = . if vote==. | pidunion==.

list pidunion-pidand vote votepidmatch 

*------------------------------------------------------------
* Konfrontation mit politischen Informationen
*------------------------------------------------------------

* Politische Gespr�che
tab pre063
gen talk = pre063
mvdecode talk, mv(-99/-98)
lab var talk "H�ufigkeit politischer Gespr�che"
lab val talk pre063		//altes Valuelabel benutzen
tab talk pre063, m

* Parteikontakt
* Vorsicht: Frage wird erst 25.08 gestellt!
* es wird nach Wahlkampfkontakt in "der vergangenen Woche"
* gefragt

egen help = anymatch(pre078_1-pre078_3), values(1)
egen contact_impers = anycount(pre078_4-pre078_11), ///
	values(1)
replace contact_impers = contact_impers + help
replace contact_impers = . if pre078_14==1 | pre078_1==-97

list pre078_1-pre078_11 contact_impers, nol
drop help

egen help = anymatch(pre079_1-pre079_3), values(1)
egen contact_pers = anycount(pre079_4-pre079_11), ///
	values(1)
replace contact_pers = contact_pers + help
replace contact_pers = . if pre079_14==1 | pre079_1==-97
list pre079_1-pre079_11 contact_pers, nol
fre contact_pers

* Zeitung 
* Frageformulierung: Wie oft in der vergangenen Woche wurde die am
* h�ufigsten gelesene Zeitung gelesen?
lookfor Zeitung
tab1 pre037 pre038 pre039

gen paper = pre038
mvdecode paper, mv(-99/-97)
replace paper = 0 if pre038==8 | pre038==9 | pre037==97	//wenn keine politischen Berichte gelesen wurden, vergangene Woche die Zeitung nicht gelesen wurden oder gar keine Zeitung gelesen wurde
tab paper pre038, m
tab paper pre037, m
fre paper

lab var paper "Tageszeitung" 

* Aufmerksamkeit Tageszeitung
lookfor aufmerksam
fre pre045

gen paperattention = pre045
mvdecode paperattention, mv(-99/-97)
replace paperattention = 4-paperattention

tab paperattention pre045, m


* TV-Nachrichten
lookfor nachrichten

fre pre047 pre049
gen ard = pre047
replace ard = 0 if pre047>7
replace ard = . if pre047<1
tab ard pre047, m

gen zdf = pre049
replace zdf = 0 if pre049>7 | pre049==-97
replace zdf = . if pre049<=-98
tab zdf pre049, m

egen news = rowmax(ard zdf)

* Aufmerksamkeit TV-Nachrichten
lookfor aufmerksam
fre pre055

gen newsattention = pre055
mvdecode newsattention, mv(-99/-97)
replace newsattention = 4-newsattention

tab newsattention pre055, m

* Private TV-Nachrichten
lookfor rtl
fre pre051
lookfor sat
fre pre053

gen rtl = pre051
replace rtl = 0 if pre051>7 | pre051==-97
replace rtl = . if pre051<=-98
tab rtl pre051, m

gen sat1 = pre053
replace sat1 = 0 if pre053>7 | pre053==-97
replace sat1 = . if pre053<=-98
tab sat1 pre053, m

egen newsprivat = rowmax(rtl sat1)

* Internet
lookfor internet
fre pre058 //Nachrichtensendungen oder Zeitung
			//im Internet
			
gen internet = pre058
replace internet = 0 if pre058>7 | pre058==-97
replace internet = . if pre058<-97

fre pre060* //Partei- und Kandidatenseiten

egen contactunion_web = anymatch(pre060_1-pre060_3), values(1)

egen anycontact_web = anycount(contactunion_web ///
	pre060_4-pre060_11), values(1)
replace anycontact_web = . if pre060_14==1

fre anycontact_web


*----------------------------------------------
* Soziodemographie
*---------------------------------------------------


* Geschlecht
lookfor geschlecht
tab pre102
gen weiblich = pre102==2
tab weiblich, m

* Interviewer
lookfor interviewer
tab pre_icode
encode pre_icode, gen(interviewer)
tab interviewer, nol

* Need 
lookfor need
tab pos045b				//aus Nachwahl, deswegen Fallverlust
gen need = pos045b
mvdecode need, mv(-99/-95)


* Alter
lookfor geburtsjahr
tab pre101
mvdecode pre101, mv(-99/-98)

gen alter = 2013-pre101
tab alter


* Bildung
lookfor Schul
tab pre103

gen educlow = pre103==1 | pre103==2
gen educhigh = pre103==4 | pre103==5
replace educlow = . if pre103==-99 | pre103==-98 | pre103==7
replace educhigh = . if pre103==-99 | pre103==-98 | pre103==7

tab pre103 educlow, m


